package com.yellowpage.bigdata.action;
  
import java.io.IOException;
import java.util.*;

import com.opensymphony.xwork2.ActionContext;
import com.yellowpage.tool.Excelexport;
import com.yellowpage.white.common.Configuration;
import com.yellowpage.white.common.Constants;
import com.yellowpage.white.struts.BaseAction;
import com.yellowpage.white.struts.Module;
import com.yellowpage.white.struts.OperationType;
import com.yellowpage.white.util.Util4Java;
import com.yellowpage.bigdata.data.NspOnofflogImeiDayregionSum;
import com.yellowpage.bigdata.service.NspFatallogRequsetSumService;
import com.yellowpage.bigdata.service.NspOnofflogImeiDayregionSumService;
import com.yellowpage.ca.data.User;
import com.yellowpage.ca.service.RegionService;

public class NspOnofflogImeiDayregionSumAction extends BaseAction {

    public String RESULT_QUERY = "query";
    public String RESULT_ADD = "add";
	public String RESULT_EDIT = "edit";
	
	private Configuration configuration;
	
	public void setConfiguration(Configuration configuration) {
		this.configuration = configuration;
	}
	
	private List<NspOnofflogImeiDayregionSum> nspOnofflogImeiDayregionSumList = new ArrayList<NspOnofflogImeiDayregionSum>();
	private List<Map> resultList = new ArrayList<Map>();
	
	private NspOnofflogImeiDayregionSum nspOnofflogImeiDayregionSum;
	private NspOnofflogImeiDayregionSumService nspOnofflogImeiDayregionSumService;
	
	private String selectedId;	
	private String[] selectedIds;	
	private String message;
	
		private String query_note;
		private String query_createTime;
		private String query_onofflogImeiDayregionSumId;
		private String query_imeiDayCount;
		private String query_imeiAllCount;
		private String query_imeiNewCount;
		private String query_logDate;
		private String query_optType;
		private String query_createUser;
		private String query_logDate_end;
		private RegionService regionService;
		private String regionName;
		private Map<String, String> regionMap;
		private NspFatallogRequsetSumService nspFatallogRequsetSumService;

		public NspFatallogRequsetSumService getNspFatallogRequsetSumService() {
			return nspFatallogRequsetSumService;
		}

		public void setNspFatallogRequsetSumService(
				NspFatallogRequsetSumService nspFatallogRequsetSumService) {
			this.nspFatallogRequsetSumService = nspFatallogRequsetSumService;
		}

		public Map<String, String> getRegionMap() {
			return regionMap;
		}

		public void setRegionMap(Map<String, String> regionMap) {
			this.regionMap = regionMap;
		}

		public String getRegionName() {
			return regionName;
		}

		public void setRegionName(String regionName) {
			this.regionName = regionName;
		}

		public RegionService getRegionService() {
			return regionService;
		}

		public void setRegionService(RegionService regionService) {
			this.regionService = regionService;
		}

		public String getRegionSql() {
			Map session = ActionContext.getContext().getSession();
			User user = (User) session.get("userObject");
			String function_code = "OMC_CLIENT_LOG_COUNT_DAY_REGIONCOUNT";
			String regionsql = regionService.getRegionclauseByUserFunction(
					user.getUserId(), function_code, "REGION_CODE");
			return regionsql;
		}
		public String queryChannel() {
			initPageRender();
			regionMap = nspFatallogRequsetSumService.getRegionMap(getRegionSql());
			setPageRenderToRequest();
			return "toRegion";
		}	
	public void prepare() {
		super.prepare();
	
		if (this.selectedId != null && !this.selectedId.equals("")) {
			this.nspOnofflogImeiDayregionSum = nspOnofflogImeiDayregionSumService.getNspOnofflogImeiDayregionSum(Long.parseLong(selectedId));
		}
	}
	
	public String queryByPage() {		
		initPageRender();
		
		Map queryMap = new HashMap();	
	    	    queryMap.put("logDate", query_logDate);
	    	    if(!regionName.equals("")){
	    			regionMap = nspFatallogRequsetSumService.getRegionMap(getRegionSql());
	    			String[] val = regionName.split(";");
	    			String str = "(";
	    			for(String ss : val){
	    				if("A".equals(ss)){
	    					for(String key : regionMap.keySet()){
	    						if(key.equals("000000")){
	        						str += "'" + ss + "',";
	        						break;
	        					}
	    					}
	    					continue;
	    				}
	    				for(String key : regionMap.keySet()){
	    					if(regionMap.get(key).contains(ss)){
	    						str += "'" + key + "',";
	    						break;
	    					}
	    				}
	    			}
	    			str= str.substring(0, str.length() - 1)+")";
	    			if(")".equals(str)){
	    				return RESULT_QUERY;
	    			}
	    			queryMap.put("regionCode", str);
	    		}else{
	    			queryMap.put("regionCode", "");
	    			queryMap.put("regionCode1", getRegionSql());
	    		}
	    	    queryMap.put("query_logDate_end", query_logDate_end);
	    	    queryMap.put("query_optType", query_optType);
	    	    	
		resultList = nspOnofflogImeiDayregionSumService.queryNspOnofflogImeiDayregionSumByPage(queryMap, pageRender);
		
		setPageRenderToRequest();

		return RESULT_QUERY;
	}

	//给出excel导出策略
	public void exportExcel()

	{
		Map queryMap = new HashMap();


		queryMap.put("logDate", query_logDate);
		if(!regionName.equals("")){
			regionMap = nspFatallogRequsetSumService.getRegionMap(getRegionSql());
			String[] val = regionName.split(";");
			String str = "(";
			for(String ss : val){
				if("A".equals(ss)){
					for(String key : regionMap.keySet()){
						if(key.equals("000000")){
    						str += "'" + ss + "',";
    						break;
    					}
					}
					continue;
				}
				for(String key : regionMap.keySet()){
					if(regionMap.get(key).contains(ss)){
						str += "'" + key + "',";
						break;
					}
				}
			}
			str= str.substring(0, str.length() - 1)+")";
			if(")".equals(str)){
				resultList = null;
			}
			queryMap.put("regionCode", str);
		}else{
			queryMap.put("regionCode", "");
			queryMap.put("regionCode1", getRegionSql());
		}
		queryMap.put("query_logDate_end", query_logDate_end);
		queryMap.put("query_optType", query_optType);

		if(resultList != null){
			
			resultList = nspOnofflogImeiDayregionSumService.queryNspOnofflogImeiDayregionSumByPage(queryMap, null);
		}

		LinkedHashMap<String,String> namemap= new LinkedHashMap<String,String>();

		//给出中文名称
		namemap.put("LOG_DATE","日期");
		namemap.put("REGION_CODE","地区代码");
		namemap.put("REGION_NAME","地区名称");
		namemap.put("OPT_TYPE","操作类型");
		namemap.put("IMEI_DAY_COUNT","IMEI当日数");
		namemap.put("IMEI_ALL_COUNT","IMEI累计数");
		namemap.put("IMEI_NEW_COUNT","IMEI新增数");


		Excelexport.exportExcel(resultList, this.getClass().getName(), namemap);


	}
	
	public String toAdd() {
		return RESULT_ADD;
	}
	
	public String save() {
	    
		nspOnofflogImeiDayregionSumService.saveNspOnofflogImeiDayregionSum(nspOnofflogImeiDayregionSum);		
		
		message = "新增成功!";
		return RESULT_ADD;
	}
	
	public void validateSave() {
	    	    	    if (nspOnofflogImeiDayregionSum.getNote().length() == 0) {
			this.addActionError("** Note 不能为空 !");
		}
			    	    	    	    	    	    	    	    	    	    	    	    	    if (nspOnofflogImeiDayregionSum.getLogDate().length() == 0) {
			this.addActionError("** LogDate 不能为空 !");
		}
			    	    	    if (nspOnofflogImeiDayregionSum.getRegionCode().length() == 0) {
			this.addActionError("** RegionCode 不能为空 !");
		}
			    	    	    if (nspOnofflogImeiDayregionSum.getOptType().length() == 0) {
			this.addActionError("** OptType 不能为空 !");
		}
			    	    	    	    
		this.setValidatorResult("/bigdata/NspOnofflogImeiDayregionSumAdd.jsp");		
	}
	
	public String toEdit() {
	    Long id = new Long(selectedId);
	    
	    nspOnofflogImeiDayregionSum = nspOnofflogImeiDayregionSumService.getNspOnofflogImeiDayregionSum(id);
	
		return RESULT_EDIT;
	}
	
	public String update() {
	
	    nspOnofflogImeiDayregionSumService.updateNspOnofflogImeiDayregionSum(nspOnofflogImeiDayregionSum);	

		message = "修改成功!";
	    
		return RESULT_EDIT;
	}
	
	public void validateUpdate() {
					    if (nspOnofflogImeiDayregionSum.getNote().length() == 0) {
			this.addActionError("** Note 不能为空 !");
		}
			    			    			    			    			    			    			    if (nspOnofflogImeiDayregionSum.getLogDate().length() == 0) {
			this.addActionError("** LogDate 不能为空 !");
		}
			    			    if (nspOnofflogImeiDayregionSum.getRegionCode().length() == 0) {
			this.addActionError("** RegionCode 不能为空 !");
		}
			    			    if (nspOnofflogImeiDayregionSum.getOptType().length() == 0) {
			this.addActionError("** OptType 不能为空 !");
		}
			    			    		this.setValidatorResult("/bigdata/NspOnofflogImeiDayregionSumUpdate.jsp");	
	}
	
	public String delete() {	    
	    List ids = new ArrayList();
	    
		for(String id : selectedIds){
			ids.add(Long.valueOf(id));
		}
		
		try {
			this.nspOnofflogImeiDayregionSumService.delete(ids);
		} catch (Exception e) {
			System.out.println("异常....");
			this.addActionError("** 可能含有子记录约束冲突删除失败 !");
		}
		
		
		return queryByPage();
	}	
	
	

	/**
	 * getters and setters
	 * 
	 * @return
	 */
	 public void setNspOnofflogImeiDayregionSum(NspOnofflogImeiDayregionSum nspOnofflogImeiDayregionSum) {
		this.nspOnofflogImeiDayregionSum = nspOnofflogImeiDayregionSum;
	}
	
	public NspOnofflogImeiDayregionSum getNspOnofflogImeiDayregionSum() {
		return nspOnofflogImeiDayregionSum;
	}
	 
	 
	 public void setNspOnofflogImeiDayregionSumService(NspOnofflogImeiDayregionSumService nspOnofflogImeiDayregionSumService) {
		this.nspOnofflogImeiDayregionSumService = nspOnofflogImeiDayregionSumService;
	}
	
	public List<NspOnofflogImeiDayregionSum> getNspOnofflogImeiDayregionSumList() {
		return nspOnofflogImeiDayregionSumList;
	}

	public void setNspOnofflogImeiDayregionSumList(List<NspOnofflogImeiDayregionSum> nspOnofflogImeiDayregionSumList) {
		this.nspOnofflogImeiDayregionSumList = nspOnofflogImeiDayregionSumList;
	}
	
	public String getSelectedId() {
		return selectedId;
	}

	public void setSelectedId(String selectedId) {
		this.selectedId = selectedId;
	}

	public String[] getSelectedIds() {
		return selectedIds;
	}

	public void setSelectedIds(String[] selectedIds) {
		this.selectedIds = selectedIds;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
	
	public List<Map> getResultList() {
		return resultList;
	}

	public void setResultList(List<Map> resultList) {
		this.resultList = resultList;
	}
	
	    public String getQuery_note() {
        return this.query_note;
    }
    
    public void setQuery_note(String note){
        this.query_note = note;
    }    

        public String getQuery_createTime() {
        return this.query_createTime;
    }
    
    public void setQuery_createTime(String createTime){
        this.query_createTime = createTime;
    }    

        public String getQuery_onofflogImeiDayregionSumId() {
        return this.query_onofflogImeiDayregionSumId;
    }
    
    public void setQuery_onofflogImeiDayregionSumId(String onofflogImeiDayregionSumId){
        this.query_onofflogImeiDayregionSumId = onofflogImeiDayregionSumId;
    }    

        public String getQuery_imeiDayCount() {
        return this.query_imeiDayCount;
    }
    
    public void setQuery_imeiDayCount(String imeiDayCount){
        this.query_imeiDayCount = imeiDayCount;
    }    

        public String getQuery_imeiAllCount() {
        return this.query_imeiAllCount;
    }
    
    public void setQuery_imeiAllCount(String imeiAllCount){
        this.query_imeiAllCount = imeiAllCount;
    }    

        public String getQuery_imeiNewCount() {
        return this.query_imeiNewCount;
    }
    
    public void setQuery_imeiNewCount(String imeiNewCount){
        this.query_imeiNewCount = imeiNewCount;
    }    

        public String getQuery_logDate() {
        return this.query_logDate;
    }
    
    public void setQuery_logDate(String logDate){
        this.query_logDate = logDate;
    }    

        public String getQuery_optType() {
        return this.query_optType;
    }
    
    public void setQuery_optType(String optType){
        this.query_optType = optType;
    }    

        public String getQuery_createUser() {
        return this.query_createUser;
    }
    
    public void setQuery_createUser(String createUser){
        this.query_createUser = createUser;
    }

	public String getQuery_logDate_end() {
		return query_logDate_end;
	}

	public void setQuery_logDate_end(String query_logDate_end) {
		this.query_logDate_end = query_logDate_end;
	}    

    
	
}
